package ar.pmt.gwt.client.recurso.view;

import ar.pmt.gwt.client.hardcode.RecursoHardCodeData;

import com.gwtext.client.data.ArrayReader;
import com.gwtext.client.data.FieldDef;
import com.gwtext.client.data.FloatFieldDef;
import com.gwtext.client.data.MemoryProxy;
import com.gwtext.client.data.RecordDef;
import com.gwtext.client.data.Store;
import com.gwtext.client.data.StringFieldDef;
import com.gwtext.client.dd.DD;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.Resizable;
import com.gwtext.client.widgets.ResizableConfig;
import com.gwtext.client.widgets.chart.yui.BarChart;
import com.gwtext.client.widgets.chart.yui.ChartType;
import com.gwtext.client.widgets.chart.yui.LineChart;
import com.gwtext.client.widgets.chart.yui.NumericAxis;
import com.gwtext.client.widgets.chart.yui.SeriesDef;
import com.gwtext.client.widgets.chart.yui.SeriesDefX;
import com.gwtext.client.widgets.chart.yui.SeriesDefY;
import com.gwtext.client.widgets.event.ResizableListenerAdapter;
import com.gwtext.client.widgets.form.TextField;
import com.gwtext.client.widgets.layout.VerticalLayout;


public class GraficosRecurso {
	
	public static Panel getPerformancePorProyecto(){
		final Panel performanceProyectoPanel = new Panel();
        performanceProyectoPanel.setLayout(new VerticalLayout());
        performanceProyectoPanel.setCollapsible(true);
        
		MemoryProxy proxy = new MemoryProxy(RecursoHardCodeData.getPerformanceData());  
  		RecordDef recordDefPerformance = new RecordDef(  
                  new FieldDef[]{  
                          new StringFieldDef("proyecto"),  
                          new FloatFieldDef("tiempoEstimado"),  
                          new FloatFieldDef("tiempoIncurrido"),  
                          new FloatFieldDef("desviacion"),  
                  }  
          );  
    
          ArrayReader reader = new ArrayReader(recordDefPerformance);  
          final Store store = new Store(proxy, reader);  
          store.load();  
    
        
          SeriesDefY[] seriesDef = new SeriesDefY[]{  
    
                  new SeriesDefY("Estimado", "tiempoEstimado"),  
                  new SeriesDefY("Incurrido", "tiempoIncurrido"),
    
          };  
          NumericAxis horasAxis = new NumericAxis(); 
          horasAxis.setLabelFunction("formatCurrencyAxisLabel");  
          final LineChart chart = new LineChart();  
          chart.setTitle("Grafica de Performance por Proyecto");  
          chart.setWMode("transparent");  
          chart.setStore(store);  
          chart.setSeries(seriesDef); 
          chart.setXField("proyecto");     
          chart.setWidth(300);  
          chart.setHeight(250); 
          ResizableConfig config = new ResizableConfig();    
          final Resizable resizable = new Resizable(chart, config);  
                  resizable.addListener(new ResizableListenerAdapter() {  
                      public void onResize(Resizable self, int width, int height) {  
                    	 chart.setWidth(width);  
                    	 chart.setHeight(height);
                    	 performanceProyectoPanel.setWidth(width);  
                    	 performanceProyectoPanel.setHeight(height);
                      }  
           });  
          TextField textField = new TextField("estimado", "Estimado:");
          String value = "00b8bf";
          textField.setStyle("style=\"background:" + value + ";\"");
          

          performanceProyectoPanel.add(chart);
          performanceProyectoPanel.add(textField);
          performanceProyectoPanel.setCollapsible(true);
          //DD p1 = new DD(performanceProyectoPanel); 
          
          DD p2 = new DD(chart);
		
		return chart;
		
	}
	
	public static Panel getPerformancePorTarea(){
		MemoryProxy proxyPorTarea = new MemoryProxy(RecursoHardCodeData
				.getPerformanceTareaRecurso());
		RecordDef recordDefTarea = new RecordDef(new FieldDef[] {
				new StringFieldDef("tarea"), new FloatFieldDef("estimado"),
				new FloatFieldDef("incurrido"), new FloatFieldDef("desvio") });

		ArrayReader reader = new ArrayReader(recordDefTarea);
		final Store store = new Store(proxyPorTarea, reader);
		store.load();

		SeriesDefX incomeSeries = new SeriesDefX("Desvio Estandar", "desvio");
		incomeSeries.setType(ChartType.LINE);

		SeriesDef[] seriesDef = new SeriesDef[] {

		new SeriesDefX("Estimado", "estimado"),
				new SeriesDefX("Incurrido(media)", "incurrido"), incomeSeries };

		NumericAxis currencyAxis = new NumericAxis();
		//currencyAxis.setLabelFunction("formatCurrencyAxisLabel");  

		final BarChart performanceTareaChart = new BarChart();
		performanceTareaChart.setTitle("Performance de Recurso por Tarea");
		performanceTareaChart.setWMode("transparent");
		performanceTareaChart.setStore(store);
		performanceTareaChart.setSeries(seriesDef);
		performanceTareaChart.setYField("tarea");
		performanceTareaChart.setXAxis(currencyAxis);
		//chart.setExpressInstall("js/yui/assets/expressinstall.swf");  
		performanceTareaChart.setWidth(300);
		performanceTareaChart.setHeight(250);
		ResizableConfig config = new ResizableConfig();    
        final Resizable resizable = new Resizable(performanceTareaChart, config);  
                resizable.addListener(new ResizableListenerAdapter() {  
                    public void onResize(Resizable self, int width, int height) {  
                  	 performanceTareaChart.setWidth(width);  
                  	 performanceTareaChart.setHeight(height);
                    }  
         }); 
        DD p = new DD(performanceTareaChart);
		return performanceTareaChart;
	}

}
